home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / ubufox / chrome / ubufox.jar / content / updateRestart.js < prev    next >
Encoding:
JavaScript  |  2009-04-14  |  4.1 KB  |  108 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Original Code is ubufox.
  15.  *
  16.  * The Initial Developer of the Original Code is
  17.  * Canonical Ltd.
  18.  * Portions created by the Initial Developer are Copyright (C) 2008
  19.  * the Initial Developer. All Rights Reserved.
  20.  *
  21.  * Contributor(s):
  22.  *   Alexander Sack <asac@jwsdot.com> - Canonical Ltd.
  23.  *   Arzhel Younsi <xionox@gmail.com>
  24.  *
  25.  * Alternatively, the contents of this file may be used under the terms of
  26.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  27.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  28.  * in which case the provisions of the GPL or the LGPL are applicable instead
  29.  * of those above. If you wish to allow use of your version of this file only
  30.  * under the terms of either the GPL or the LGPL, and not to allow others to
  31.  * use your version of this file under the terms of the MPL, indicate your
  32.  * decision by deleting the provisions above and replace them with the notice
  33.  * and other provisions required by the GPL or the LGPL. If you do not delete
  34.  * the provisions above, a recipient may use your version of this file under
  35.  * the terms of any one of the MPL, the GPL or the LGPL.
  36.  *
  37.  * ***** END LICENSE BLOCK ***** */
  38.  
  39. var gAppStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(Components.interfaces.nsIAppStartup);
  40. var gCategoryManager = Components.classes["@mozilla.org/categorymanager;1"].getService(Components.interfaces.nsICategoryManager);
  41. var intervalID = null;
  42. window.addEventListener('load', scheduleCheckForUpdate, false);
  43.  
  44. function showRestartNotification()
  45. {
  46.   var strbundle = document.getElementById("ubufox-restart-strings")
  47.   var restartNotificationLabel=strbundle.getString("restartNotificationLabel");
  48.   var restartNotificationButton=strbundle.getString("restartNotificationButton");
  49.   var restartNotificationKey=strbundle.getString("restartNotificationKey");
  50.   var buttons = [{ label: restartNotificationButton, accessKey: restartNotificationKey, callback: restart }];
  51.   
  52.   var num = gBrowser.browsers.length;
  53.   for (var i = 0; i < num; i++) {
  54.     var b = gBrowser.getBrowserAtIndex(i);
  55.     try {
  56.       var notificationBox = gBrowser.getNotificationBox(b);
  57.       var notification = notificationBox.getNotificationWithValue("notification-restart");
  58.       if (!notification)
  59.       {
  60.         notificationBox.appendNotification(restartNotificationLabel, 'notification-restart',"", notificationBox.PRIORITY_WARNING_LOW, buttons);
  61.       }
  62.     } catch(e) {
  63.         Components.utils.reportError(e);
  64.      }
  65.   }
  66. }
  67.  
  68. function restart()
  69. {
  70.   gAppStartup.quit(gAppStartup.eRestart | gAppStartup.eAttemptQuit);
  71. }
  72.  
  73. function checkUpdate()
  74. {
  75.   var resReqFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
  76.   resReqFile.initWithPath("/var/lib/update-notifier/user.d/firefox-3.0-restart-required");
  77.  
  78.   if(resReqFile.exists())
  79.   {
  80.     var dateResReq = resReqFile.lastModifiedTime;
  81.     var timestamp = getAndSetTimeBase();
  82.     if(dateResReq > timestamp)
  83.     {
  84.       showRestartNotification();
  85.     }
  86.   }
  87. }
  88.  
  89. function getAndSetTimeBase () {
  90.   var timestamp = 0;
  91.   try {
  92.     var t = gCategoryManager.getCategoryEntry ("ubufox", "startup-timestamp");
  93.     timestamp = parseInt (t);
  94.   } catch (e) {
  95.     // exception means that there is no such entry; set the initial timestamp
  96.     timestamp = Date.now();
  97.     gCategoryManager.addCategoryEntry ("ubufox", "startup-timestamp", ""+timestamp, false, true);
  98.   }
  99.   return timestamp;
  100. }
  101.  
  102. function scheduleCheckForUpdate()
  103. {
  104.   getAndSetTimeBase ();
  105.   if (!intervalID)
  106.     intervalID = setInterval("checkUpdate()", 10000);
  107. }
  108.